﻿//using System;
//using UnityEngine;

//namespace Yoozoo.Gameplay.Managers
//{
//    public class NetworkPing
//    {
//        /// <summary>
//        /// Ping的间隔时长(单位s)
//        /// </summary>
//        public static readonly int PING_INTERVAL = 30;
//        /// <summary>
//        /// Ping的检测间隔
//        /// </summary>
//        public static readonly int PING_CHECK_INTERVAL = 1;
//        /// <summary>
//        /// 网络超时的时长(单位s)
//        /// </summary>
//        public static int NETWORK_TIMEOUT
//        {
//            get
//            {
//                return PING_INTERVAL * PING_RETRY_TIMES;
//            }
//        }
//        /// <summary>
//        /// 心跳发送超时的时长(单位s)
//        /// </summary>
//        public static int PING_SEND_TIMEOUT
//        {
//            get
//            {
//                return PING_INTERVAL - PING_CHECK_INTERVAL;
//            }
//        }
//        /// <summary>
//        /// 心跳接收超时的时长(单位s),比网络超时少一个心跳间隔再减1S
//        /// </summary>
//        public static int PING_RECV_TIMEOUT
//        {
//            get
//            {
//                return NETWORK_TIMEOUT - PING_INTERVAL - PING_CHECK_INTERVAL;
//            }
//        }
//        public NetworkManager.IListener listener;
//        /// <summary>
//        /// 心跳失败的最大允许次数
//        /// </summary>
//        private const int PING_RETRY_TIMES = 3;
//        /// <summary>
//        /// 时间戳的起始时刻
//        /// </summary>
//        private readonly DateTime START_TIME;
//        /// <summary>
//        /// 最后一次发送ping的时间点
//        /// </summary>
//        private long lastSendPingTime;
//        /// <summary>
//        /// 最后一次接收ping的时间点
//        /// </summary>
//        private long lastRecvPingTime;
//        /// <summary>
//        /// 网络延迟
//        /// </summary>
//        private double pingDelayTime;
//        private long serverTime;

//        public long ServerTime => serverTime;

//        public NetworkPing()
//        {
//            START_TIME = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
//        }
//        /// <summary>
//        /// 发送心跳，每过10S执行一次
//        /// </summary>
//        public void SendPing()
//        {
//            lastSendPingTime = serverTime;
//            if (listener!=null)
//            {
//                listener.Ping(lastSendPingTime);
//            }
//        }

//        /// <summary>
//        /// 检测心跳链接是否保持中，每过1S检查一次
//        /// </summary>
//        public bool CheckPingIsKeep()
//        {
//            if (lastSendPingTime > lastRecvPingTime &&
//                serverTime - lastSendPingTime > PING_SEND_TIMEOUT * 1000 &&
//                serverTime - lastRecvPingTime > PING_RECV_TIMEOUT * 1000)
//            {
//                //Debug.Log("心跳保持检测失败，serverTime：" + serverTime + "，lastSendPingTime：" + lastSendPingTime + "，lastRecvPingTime：" + lastRecvPingTime);
//                return false;
//            }

//            return true;
//        }

//        public void UpdatePingTimestamp()
//        {
//            lastRecvPingTime = serverTime;
//            //Debug.Log("接收心跳包:" + lastRecvPingTime);
//        }
        
//    }
//}